package cn.fl.product.service;

import java.util.Date;
import java.util.List;

import cmm.comm.facade.framework.condition.SysCdMapDQueryCondition;
import cmm.mid.core.framework.dto.DataResultDTO;
import cmm.mid.core.framework.page.KeyValueVO;
import cmm.mid.core.framework.page.Pager;
import cn.cmm.base.framework.exception.BaseException;
import cn.fl.product.vo.SplFlowSHVO;
import cn.fl.product.vo.SplInfoVO;
import cn.fl.system.vo.SysCdMapDVO;
import cn.fl.system.vo.SysUlFilesRecVO;
import fl.flow.facade.flow.dto.FlowStartParamsDTO;
import fl.spl.facade.spl.condition.SplInfoQueryCondition;

/**
 * @Description: 供应商信息表 客户端服务层接口
 * 业务层方法名称前缀：
 * 新增：add*
 * 删除：remove*
 * 修改：modify*
 * 批量：batch*
 * 查询对象：select* get*
 * 查询集合：search*
 */
public interface ISplInfoService {
    /**
     * 更新黑名单
     * @param id
     * @param blackList
     * @return
     */
    public int updateBlackList(String id,String blackList) throws BaseException;

	
	/**
	 * 供应商资料新增
	 * @param fileList
	 * @return
	 * @throws BaseException
	 */
	public boolean batchAddFileList(List<SysUlFilesRecVO> fileList)throws BaseException;
	
	/**
	 * 获取唯一对象
	 * @param id 主键
	 * @return 对象DTO
	 */
	public SplInfoVO selectById(Long id)throws BaseException;
	
	/**
	 * 新增
	 * @param entity
	 * @return
	 */
    public Long add(SplInfoVO entity) throws BaseException;
    
    /**
	 * 校验供应商是否已存在
	 * @param splNm	供应商名称
	 * @param bizLicNo 税务登记号
	 * @return
	 * @throws BaseException
	 */
	public SplInfoVO checkSplExist(String splNm,String bizLicNo)throws BaseException;

    /**
     * 删除
     * @param id
     * @return
     */
    //public boolean removeById(Long id)throws BaseException;
    
    /**
     * 批量删除
     * @param ids
     * @return
     * @throws BaseException
     */
    public boolean removeByIds(List<Long> ids)throws BaseException;

    /**
     * 修改
     * @param entity
     * @return
     */
    public boolean modify(SplInfoVO entity)throws BaseException;
    
    /**
     * 修改
     * @param entity
     * @return
     */
    public boolean modifySplInfo(SplInfoVO entity)throws BaseException;
    
    /**
     * 修改审核状态
     * @param id
     * @param audStsCd
     * @param mdfTm
     * @param mdfUsrId
     * @return
     * @throws BaseException
     */
    public boolean modifyAudStsCd(Long id,String audStsCd,Date mdfTm,Long mdfUsrId)throws BaseException;

    /**
     * 分页查询所有
     * @param page
     * @return
     */
    public Pager searchListPage(Pager page)throws BaseException;

    /**
     * 分页查询所有(关键信息掩码返回)
     * @param page
     * @return
     */
    public Pager searchListPageWithEncrypt(Pager page)throws BaseException;
    
    /**
     * 查询厂商下拉框数据
     * @return
     * @throws BaseException
     */
    public List<KeyValueVO> searchMfrKVList()throws BaseException;
    
    /**
     * 查询资本单位下拉框数据
     * @return
     * @throws BaseException
     */
    public List<KeyValueVO> searchCapUntCdList()throws BaseException;
    
    /**
     * 查询经营品牌下拉框数据
     * @return
     * @throws BaseException
     */
    public List<KeyValueVO> searchBrandList(String code)throws BaseException;
    
    /**
     * 查询事业部下拉框数据
     * @return
     * @throws BaseException
     */
    public List<KeyValueVO> searchBuOrgCdList()throws BaseException;
    
    /**
     * 查询项目类型
     * @return
     * @throws BaseException
     */
    public List<KeyValueVO> searchPrjTypCdList()throws BaseException;
    
    /**
     * 查询企业性质下拉框数据
     * @return
     * @throws BaseException
     */
    public List<KeyValueVO> searchCorpTypCdList()throws BaseException;
    
    /**
     * 查询审核状态下拉框数据
     * @return
     * @throws BaseException
     */
    public List<KeyValueVO> searchAudStsCdList()throws BaseException;
    
    /**
     * 查询供应商级别下拉框数据
     * @return
     * @throws BaseException
     */
    public List<KeyValueVO> searchSplLvlCdList()throws BaseException;
    
    /**
     * 查询立项级别下拉框数据
     * @return
     * @throws BaseException
     */
    public List<KeyValueVO> searchPrjLvlCdList()throws BaseException;
    
    /**
     * 
     * @param condition
     * @return
     * @throws BaseException
     */
    public List<SysCdMapDVO> searchSysCdMapDList(SysCdMapDQueryCondition condition) throws BaseException;


    /**
     * 供应商准入流程
     * 根据用户ID和业务主键等参数启动供应商准入流程
     * @param flowStartParamsDTO 启动参数
     */
    public DataResultDTO addSplAdmissionFlowStart(FlowStartParamsDTO flowStartParamsDTO)throws BaseException;
    /**
     * 供应商相关流程
     * @param splId
     * @return
     * @throws BaseException
     */
	public List<SplFlowSHVO> searchSplFlowList(Long splId)throws BaseException;

    /**
     * 供应商经营类型(新车)
     *
     * */
    public List<KeyValueVO> searchNewCarTyp() throws BaseException ;

    /**
     * 供应商经营类型(二手车)
     * */
    public List<KeyValueVO> searchUsedCarTyp() throws BaseException ;

    /**
     * 供应商经营范围
     * */
    public List<KeyValueVO> searchBizScopeTyp() throws BaseException ;
	
	/**
     * 查询供应商属性下拉框数据
     * @return
     * @throws BaseException
     */
    public List<KeyValueVO> searchSplAttrCdList() throws BaseException;

    /**
     * 查询供应商公司归属下拉框数据
     * @return
     * @throws BaseException
     */
    public List<KeyValueVO> searchOwnerCdList() throws BaseException;

    /**
     * 通过ID及页面来源查询经销商（区分详细及修改页面）
     * @param id
     * @param opTypCd
     * @return
     * @throws BaseException
     */
    public SplInfoVO selectById(Long id,String opTypCd) throws BaseException ;

    /**
     * 通过ID及页面来源查询经销商（区分详细及修改页面）(关键信息掩码返回)
     * @param id
     * @param opTypCd
     * @return
     * @throws BaseException
     */
    public SplInfoVO selectByIdWithEncrypt(Long id,String opTypCd) throws BaseException ;
    
    public List<SplInfoVO> searchList(SplInfoQueryCondition condition) throws BaseException ;
    /**
     * 修改供应商三方授权信息
     * @param vo
     * @return 
     * @throws BaseException
     * */
    public boolean modifyLoa(SplInfoVO vo) throws BaseException ;

    /**
     * 分页查询狮桥分周转换率
     * @param page
     * @return
     */
    public Pager searchSplLimRateListPage(Pager page)throws BaseException;
}
